package auth

import (
	"time"
)

// SMSCode 短信验证码表模型
type SMSCode struct {
	ID         uint64    `gorm:"primary_key;auto_increment" json:"id"`
	Phone      string    `gorm:"type:varchar(20);index;comment:手机号" json:"phone"`
	Code       string    `gorm:"type:varchar(10);comment:验证码" json:"code"`
	CodeType   int       `gorm:"type:tinyint;comment:验证码类型 1:登录 2:注册 3:重置密码" json:"code_type"`
	UsedStatus int       `gorm:"type:tinyint;default:0;comment:使用状态 0:未使用 1:已使用" json:"used_status"`
	ExpireTime time.Time `gorm:"comment:过期时间" json:"expire_time"`
	CreateTime time.Time `gorm:"autoCreateTime;comment:创建时间" json:"create_time"`
	UsedTime   *time.Time `gorm:"comment:使用时间" json:"used_time"`
	ClientIP   string    `gorm:"type:varchar(45);comment:客户端IP" json:"client_ip"`
}

// TableName 指定表名
func (SMSCode) TableName() string {
	return "sms_codes"
}

// SMSCodeUsedStatus 验证码使用状态常量
const (
	SMSCodeUnused = 0 // 未使用
	SMSCodeUsed   = 1 // 已使用
)